﻿using Internal.KuiHuaBaoDian.Services.Battle.Behaviour;
using KuiHuaBaoDian.Services.Battle.Behaviour;

namespace KuiHuaBaoDian.Services.Battle.Behaviour {

    /// <summary>
    /// 行为信息
    /// </summary>
    public interface IBattleBehaviourInfo {

        /// <summary>
        /// 行为类型
        /// </summary>
        BattleBehaviourType Type { get; }
    }

    public class KHBD_BattleBehaviourInfo : IBattleBehaviourInfo, IBattleBehaviourInfoInternal {

        public BattleBehaviourType Type { get; init; }

        int IBattleBehaviourInfoInternal.FrameIndex { get; set; }
    }

    public class KHBD_BattleBehaviourInfo<TParameter> : KHBD_BattleBehaviourInfo {

        public TParameter Parameter { get; init; }
    }
}

namespace Internal.KuiHuaBaoDian.Services.Battle.Behaviour {

    public interface IBattleBehaviourInfoInternal : IBattleBehaviourInfo {

        int FrameIndex { get; set; }
    }
}
